//package com.yang;
//
//import com.yang.entity.Drop;
//import com.yang.entity.Enchant;
//import com.yang.entity.Monster;
//import org.bukkit.Bukkit;
//import org.bukkit.Location;
//import org.bukkit.Material;
//import org.bukkit.World;
//import org.bukkit.configuration.ConfigurationSection;
//import org.bukkit.enchantments.Enchantment;
//import org.bukkit.entity.Entity;
//import org.bukkit.entity.EntityType;
//import org.bukkit.entity.LivingEntity;
//import org.bukkit.entity.Player;
//import org.bukkit.event.EventHandler;
//import org.bukkit.event.Listener;
//import org.bukkit.event.entity.EntityDamageByEntityEvent;
//import org.bukkit.event.entity.EntityDeathEvent;
//import org.bukkit.inventory.ItemStack;
//import org.bukkit.inventory.meta.ItemMeta;
//import org.bukkit.plugin.java.JavaPlugin;
//import org.bukkit.scheduler.BukkitRunnable;
//
//import java.util.ArrayList;
//import java.util.List;
//import java.util.Set;
//
//
//public class Main1 extends JavaPlugin implements Listener {
//
//    private final int detectionRange = 32; // 检测范围为 32 格
//
//    private final int checkIntervalTicks = 20 * 10; // 检查间隔为60秒，可以根据需求调整
//
//    //怪物集合
//    private List<Monster> monsterList = new ArrayList<>();
//
//    @Override
//    public void onLoad() {
//        getLogger().info("加载");
//    }
//
//    @Override
//    public void onEnable() {
//        getLogger().info("启动");
//        loadConfig();
//        getServer().getPluginManager().registerEvents(this, this);
//        // 启动定时任务
////        startCheckTask();
//    }
//
//
//    //读取config.yml配置文件
//    public void loadConfig() {
//        this.saveDefaultConfig();
//        loadConfigMonster();
//    }
//
//    // 启动定时任务
//    public void startCheckTask() {
//        BukkitRunnable task = new BukkitRunnable() {
//            @Override
//            public void run() {
//                // 每隔一定时间执行检查玩家位置的任务
//                saveMaterial();
//            }
//        };
//        task.runTaskTimer(this, 0, checkIntervalTicks);
//    }
//
//    //加载yml怪物列表
//    public void loadConfigMonster() {
//        ConfigurationSection monster = getConfig().getConfigurationSection("monster");
//        //加载怪物分类
//        //目前有两个种类
////        for (String monsterCount : monster.getKeys(false)) {
////            ConfigurationSection configurationSection = monster.getConfigurationSection(monsterCount);
////            for (String monsterName : configurationSection.getKeys(false)){
////                getLogger().info(monsterName);
////            }
//
//        //            // 把里面的信息赋值给实体类
////            Monster entityMonster = new Monster();
////            // 怪物名称
////            entityMonster.setName(monster.getString(monsterCount + ".name"));
////            // 怪物类型
////            entityMonster.setType(monster.getString(monsterCount + ".type"));
////            // 怪物等级
////            entityMonster.setLevel(monster.getInt(monsterCount + ".level"));
////            // 怪物生命值
////            entityMonster.setHp(monster.getDouble(monsterCount + ".hp"));
////
////
////
////            // 生成世界
////            entityMonster.setRadius(monster.getInt(monsterCount + ".radius"));
////            entityMonster.setNum(monster.getInt(monsterCount + ".num"));
////            entityMonster.setTime(monster.getInt(monsterCount + ".time"));
////            entityMonster.setWorld(monster.getString(monsterCount + ".world"));
////            entityMonster.setX(monster.getInt(monsterCount + ".x"));
////            entityMonster.setY(monster.getInt(monsterCount + ".y"));
////            entityMonster.setZ(monster.getInt(monsterCount + ".z"));
////            entityMonster.setItem(monster.getString(monsterCount + ".item"));
////            monsterList.add(entityMonster);
////        }
//        if (monster != null) {
//            Set<String> monsterKeys = monster.getKeys(false);
//
//            for (String monsterKey : monsterKeys) {
//                ConfigurationSection currentMonster = monster.getConfigurationSection(monsterKey);
//                Monster entityMonster = new Monster();
//                // 设置怪物名称、类型、等级、生命值等属性，以下为示例，您可以根据实际情况调整
//                entityMonster.setName(currentMonster.getString("name"));
//                entityMonster.setType(currentMonster.getString("type"));
//                entityMonster.setLevel(currentMonster.getInt("level"));
//                entityMonster.setHp(currentMonster.getDouble("hp"));
//                entityMonster.setItem(currentMonster.getString("item"));
//                entityMonster.setItemName(currentMonster.getString("itemName"));
//                //拿到附魔所有属性
//                ConfigurationSection itemEnchant = currentMonster.getConfigurationSection("itemEnchant");
//                Set<String> itemEnchantKeys = itemEnchant.getKeys(false);
//                List<Enchant> enchantList = new ArrayList<>();
//                itemEnchantKeys.forEach(v -> {
//                    ConfigurationSection itemEnchantSection = itemEnchant.getConfigurationSection(v);
//                    enchantList.add(
//                            new Enchant(
//                                    itemEnchantSection.getString("type"),
//                                    itemEnchantSection.getInt("level")
//                            )
//                    );
//                });
//                entityMonster.setItemEnchant(enchantList);
//                // 拿到所有掉落信息
//                ConfigurationSection drop = currentMonster.getConfigurationSection("drop");
//                Set<String> dropKeys = drop.getKeys(false);
//                List<Drop> dropList = new ArrayList<>();
//                dropKeys.forEach(v -> {
//                    ConfigurationSection dropSection = drop.getConfigurationSection(v);
//                    dropList.add(
//                            new Drop(
//                                    dropSection.getString("dropName"),
//                                    dropSection.getString("dropType"),
//                                    dropSection.getString("dropEnchant"),
//                                    dropSection.getInt("dropEnchantLevel"),
//                                    dropSection.getInt("dropNum"),
//                                    dropSection.getInt("dropMin"),
//                                    dropSection.getInt("dropMax"),
//                                    dropSection.getString("dropLore")
//                            )
//                    );
//                });
//                entityMonster.setDrop(dropList);
//                entityMonster.setTag(currentMonster.getString("tag"));
//                entityMonster.setWorld(currentMonster.getString("world"));
//                entityMonster.setX(currentMonster.getInt("x"));
//                entityMonster.setY(currentMonster.getInt("y"));
//                entityMonster.setZ(currentMonster.getInt("z"));
//                entityMonster.setNum(currentMonster.getInt("num"));
//                entityMonster.setTime(currentMonster.getInt("time"));
//                entityMonster.setRadius(currentMonster.getInt("radius"));
//                // 添加到怪物列表
//                monsterList.add(entityMonster);
//            }
//        }
//    }
//
//    //生成怪物
//    public void saveMaterial() {
//        monsterList.forEach(monster -> {
//            // 根据此怪物附近有没有玩家生成怪物
//            if (checkPlayersNearCustomArea(monster.getX(), monster.getZ())) {
//                for (int i = 0; i < 10; i++) {
//                    //怪物手持物品
//                    ItemStack itemStack = new ItemStack(Material.getMaterial(monster.getItem())); // 用你想要的物品替换 Diamond Sword
//                    // 你可以设置物品的元数据，例如名称、附魔等
//                    ItemMeta meta = itemStack.getItemMeta();
//                    meta.setDisplayName("迪拜之斧");
//                    // 添加附魔
//                    Enchantment enchantment = Enchantment.getByName("DAMAGE_ALL"); // 以伤害附魔为例
//                    int level = 10; // 附魔等级
//                    meta.addEnchant(enchantment, level, true); // 将附魔添加到物品元数据中
//                    // 应用物品元数据
//                    itemStack.setItemMeta(meta);
//                    //设置此物品攻击伤害
//                    itemStack.setDurability((short) (itemStack.getDurability() + 50));
//                    itemStack.setDurability((short) 3999);
//                    // 生成怪物
//                    //生成世界
//                    World world = getServer().getWorld(monster.getWorld()); // 替换为你希望生成生物的世界名称
//                    EntityType entityType = EntityType.fromName(monster.getType());
//                    Location location = new Location(world, monster.getX(), monster.getY(), monster.getZ()); // 使用获取的坐标位置
//                    //怪物类型
//                    LivingEntity entity = (LivingEntity) world.spawnEntity(location, entityType);
//                    //添加标签
//                    entity.addScoreboardTag("迪拜首富");
//                    //血量
//                    entity.setMaxHealth(monster.getHp());
//                    entity.setHealth(monster.getHp());
//                    entity.setAI(true);
//                    entity.setCustomNameVisible(true);
//                    entity.setCustomName(monster.getName());
//                    //手持物品
//                    entity.getEquipment().setItemInMainHand(itemStack);
//                }
//            }
//        });
//    }
//
//    // 检查玩家是否在指定区域附近
//    public Boolean checkPlayersNearCustomArea(Integer x, Integer y) {
//        for (Player player : Bukkit.getOnlinePlayers()) {
//            Location playerLocation = player.getLocation();
//            if (isPlayerNearCustomArea(playerLocation, x, y)) {
//                getLogger().info("玩家 " + player.getName() + " 在指定区域内！");
//                return true;
//            } else {
//                getLogger().info("玩家 " + player.getName() + " 不在指定区域内！");
//                return false;
//            }
//        }
//        return false;
//    }
//
//    // 检查玩家是否在指定区域附近
//    public boolean isPlayerNearCustomArea(Location location, Integer x, Integer y) {
//        // 指定的区域位置为 X 轴 -234，Z 轴 233，Y 轴 0-255（整个高度范围）
//        int centerX = x;
//        int centerZ = y;
//        //获取 X 组件的下限值，指示包含此位置的块。
//        int playerX = location.getBlockX();
//        int playerZ = location.getBlockZ();
//
//        // 检查玩家 X 和 Z 轴坐标是否在指定范围内
//        return Math.abs(playerX - centerX) <= detectionRange && Math.abs(playerZ - centerZ) <= detectionRange;
//    }
//
//    @EventHandler
//    public void onPlayerAttackEntity(EntityDamageByEntityEvent event) {
////        if (event.getDamager() instanceof Player && event.getEntity() instanceof Zombie) {
//        if (event.getDamager() instanceof Player && event.getEntity() instanceof LivingEntity) {
//            Player player = (Player) event.getDamager();
//            ItemStack mainHandItem = player.getInventory().getItemInMainHand();
//            ItemStack offHandItem = player.getInventory().getItemInOffHand();
//            Entity entity = event.getEntity();
//
//            double additionalDamage = 0.0; // 额外伤害值
//
//            // 检查主手物品
//            if (mainHandItem != null && mainHandItem.hasItemMeta() && mainHandItem.getItemMeta().hasLore()) {
//                List<String> lore = mainHandItem.getItemMeta().getLore();
//                if (lore.contains("§6§l10个迪拜金粒换一个迪拜金子")) {
//                    // 检查被攻击的生物是否具有特定标签
//                    if (entity instanceof LivingEntity && entity.getScoreboardTags().contains("迪拜首富")) {
//                        // 如果主手物品lore包含特定内容
//                        additionalDamage += 5.0; // 增加5点伤害
//                        player.sendMessage("你主手所持的物品包含特定的lore！");
//                        player.sendMessage("增加了:" + additionalDamage + "伤害");
//                    }
//                }
//            }
//
//            // 检查副手物品
//            if (offHandItem != null && offHandItem.hasItemMeta() && offHandItem.getItemMeta().hasLore()) {
//                List<String> lore = offHandItem.getItemMeta().getLore();
//                if (lore.contains("§6§l10个迪拜金粒换一个迪拜金子")) {
//                    if (entity instanceof LivingEntity && entity.getScoreboardTags().contains("迪拜首富")) {
//                        // 如果副手物品lore包含特定内容
//                        additionalDamage += 5.0; // 增加5点伤害
//                        player.sendMessage("你副手所持的物品包含特定的lore！");
//                        player.sendMessage("增加了:" + additionalDamage + "伤害");
//                    }
//                }
//            }
//
//            // 增加额外的伤害值到攻击
//            event.setDamage(event.getDamage() + additionalDamage);
//        }
//    }
//
//
//    //清空怪物默认 掉落物
//    @EventHandler
//    public void onEntityDeath(EntityDeathEvent event) {
////        playerItemHeldEvent.getNewSlot();
//        ItemStack item = new ItemStack(Material.getMaterial("GOLD_NUGGET"));
//        //创建一个物品
//        ItemMeta meta = item.getItemMeta();
//        //获得物品的meta
//        getLogger().info("meta -------------------------" + meta.hasLore());
//        if (meta.hasLore()) {
//            List<String> lore = meta.getLore();
//            getLogger().info("lore -------------------------" + lore);
//            //获得这个lore
//            if (lore.contains("§6§l10个迪拜金粒换一个迪拜金子")) {
//                //如果lore包含特定内容具体实现
//                getLogger().info("有这个lore -------------------------");
//            }
//        }
//        LivingEntity entity = event.getEntity();
//        // 检查实体是否是你创建的生物类型
//        if (isYourCustomCreature(entity)) {
//            event.getDrops().clear(); // 清除默认掉落
//            ItemStack customDrop = new ItemStack(Material.getMaterial("GOLD_NUGGET")); // 举例：自定义掉落物品为钻石
//            ItemMeta itemMeta = customDrop.getItemMeta();
//            itemMeta.setDisplayName("§a§l迪拜金粒");
//            List<String> stringList = new ArrayList<>();
//            stringList.add("§6§l10个迪拜金粒换一个迪拜金子");
//            itemMeta.setLore(stringList);
////            设置掉落物多少个
//            customDrop.setAmount(10); // 举例：自定义掉落物品数量为10
//            customDrop.setItemMeta(itemMeta);
////            customDrop.addUnsafeEnchantment(Enchantment.SILK_TOUCH, 10); // 添加附魔（示例为举例，可以替换为你需要的附魔）
//            customDrop.addUnsafeEnchantment(Enchantment.getByName("FIRE_ASPECT"), 1);
//            event.getDrops().add(customDrop); // 添加自定义掉落物品
//        }
//    }
////    public void a(){
////        //这是金鼎
////        ItemStack item = new ItemStack(Material.GOLD_INGOT);
////        //创建一个物品
////        ItemMeta meta = item.getItemMeta();
////        //获得物品的meta
////        if(meta.hasLore()){
////            List<String> lore= meta.getLore();
////            //获得这个lore
////            if (lore.contains("特定的内容")) {
////                //如果lore包含特定内容具体实现
////            }
////        }
////    }
//
//
//    // 自定义方法用于检查实体是否是你创建的生物类型
//    public boolean isYourCustomCreature(LivingEntity entity) {
//        return entity.getScoreboardTags().contains("迪拜首富");
//    }
//
//    @Override
//    public void onDisable() {
//        getLogger().info("清除");
//    }
//}
